<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 封装一个方法 判断一个值是否是4的n次方
    // 递归方法
    function isFourPower(n) {
      // 不考虑负数
      if (n <= 0) {
        return false;
      }
      // n是所有次方的0次方 所以为ture
      if (n === 1) {
        return true;
      }
      // 首先当前数字对4取余是0 并且当前数字对4取余为0之后 还要把结果再次递归判断
      if (n % 4 === 0 && isFourPower(n / 4)) {
        return true;
      }
      // 其他情况都为false
      return false;
    }
    console.log(isFourPower(16));


    // 不使用递归的方法（取代递归使用的while循环的方式）
    function isFourPower1(n) {
      if (n <= 0) {
        return false;
      }
      // 只要n除以4取余一直是0，则说明现在还是4的倍数
      while (n % 4 === 0) {
        // while循环也是需要改变的
        n = n / 4;
      }
      // 当经过循环之后 n的值是1 才说明是一路除4过来的 如果不为1 则说明不是4的次方
      return n === 1;
    }

    console.log(isFourPower1(16));
  </script>
</body>

</html>